home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor2
/
basecalc.src
< prev
next >
Wrap
Text File
|
1993-02-18
|
3KB
|
99 lines
%%HP: T(3)A(R)F(.);
@ BASECALC by Ian Matthew Smith
@ Automatic decimal lengths added by Joe Horn
DIR
BMTH @ create custom menu
\<< { Add \<< IB2\-> + \->IB \>> }
{ Sub \<< IB2\-> - \->IB \>> }
{ Mul \<< IB2\-> * \->IB \>> }
{ Div \<< IB2\-> / \->IB \>> }
BBASE "/" IBFIX + +
{ \<< B\->FIX 'BBASE' STO BMTH \>>
\<< B\->FIX SWAP IB\-> SWAP 'BBASE' STO \->IB BMTH \>>
\<< 'IBFIX' STO BMTH \>> }
2 \->LIST { CONV {
\<< DUP
IF TYPE 2 ==
THEN IB\->
ELSE \->IB
END
\>>
\<< DUP
IF TYPE 0 ==
THEN R\->B
ELSE DUP
IF TYPE 10 ==
THEN B\->R
END
END
\>> } } 6 \->LIST TMENU
\>>
\->IB
\<< DUP
IF TYPE 0 ==
THEN DUP FP SWAP IP R\->B
ELSE 0 SWAP
END DUP
IF TYPE 10 ==
THEN RCWS SWAP "" SWAP 64 STWS
WHILE DUP B\->R
REPEAT DUP BBASE DUP2 / * - 1 + BSTR SWAP
B\->R DUP SUB ROT + SWAP BBASE /
END DROP SWAP STWS SWAP
IF DUP BBASE IBFIX ^ * 1 <
THEN DROP
ELSE "" SWAP 1 IBFIX
START
IF DUP 0 \=/
THEN BBASE * DUP IP BSTR SWAP 1 + DUP SUB ROT SWAP + SWAP FP
END
NEXT DROP "." SWAP + +
END
END
\>>
IB\->
\<< DUP
IF TYPE 2 ==
THEN RCWS SWAP 64 STWS
IF DUP "." POS
THEN DUP DUP "." POS SWAP DUP SIZE ROT 1 + SWAP SUB
SWAP DUP "." POS 1 - 1 SWAP SUB
ELSE "" SWAP
END # 0d SWAP DUP SIZE 1 - 0 SWAP
FOR j DUP DUP SIZE j - DUP SUB BSTR SWAP POS 1 - # 1d
IF j 0 >
THEN BBASE 1 j
START DUP ROT * SWAP
NEXT DROP
END * ROT + SWAP
NEXT DROP
IF DUP B\->R 1.E12 < IBFIX AND
THEN B\->R
END SWAP
IF DUP SIZE
THEN 0 SWAP DUP SIZE 1 SWAP
FOR j DUP j j SUB BSTR SWAP POS 1 - BBASE j NEG ^ * ROT + SWAP
NEXT DROP +
ELSE DROP
END SWAP STWS
ELSE
IF DUP TYPE 0 == IBFIX NOT AND
THEN R\->B
END
END
\>>
IB2\->
\<< IB\-> SWAP IB\-> SWAP
\>>
BBASE 16
IBFIX 0
\->IB2
\<< \->IB SWAP \->IB SWAP
\>>
B\->FIX @ this tiny routine was tacked on by Joe Horn
\<< 2 MAX 62 MIN 12 OVER LOG / IP 'IBFIX' STO
\>>
BSTR
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
END